package com.example.artemis.config;

/**
 * 消费者配置抽象类
 * 定义消费者的基本配置参数
 */
public abstract class AbstractConsumerConfig {

    /**
     * 获取连接器URL
     * @return 连接器URL
     */
    public String getConnectorUrl() {
        return "vm://0";
    }

    /**
     * 获取消费者数量
     * @return 消费者数量
     */
    public abstract int getConsumerCount();

    /**
     * 获取队列名称数组
     * @return 队列名称数组
     */
    public abstract String[] getQueueNames();

    /**
     * 获取会话模式
     * @return 会话模式
     */
    public int getSessionMode() {
        return javax.jms.Session.CLIENT_ACKNOWLEDGE;
    }

    /**
     * 是否为事务会话
     * @return true表示事务会话，false表示非事务会话
     */
    public boolean isTransacted() {
        return false;
    }

    /**
     * 获取消费者名称前缀
     * @return 消费者名称前缀
     */
    public String getConsumerNamePrefix() {
        return "Consumer";
    }

    /**
     * 获取消息处理超时时间（毫秒）
     * @return 超时时间
     */
    public long getProcessingTimeoutMs() {
        return 30000L; // 30秒
    }

    /**
     * 获取最大重试次数
     * @return 最大重试次数
     */
    public int getMaxRetryCount() {
        return 3;
    }

    /**
     * 获取重试延迟时间（毫秒）
     * @return 重试延迟时间
     */
    public long getRetryDelayMs() {
        return 1000L; // 1秒
    }
}